const axios = require('axios');

// 配置
const BASE_URL = 'http://localhost:3000/api';
const JWT_TOKEN = 'your_jwt_token_here'; // 替换为实际的JWT token

// 测试中间件功能
async function testMiddleware() {
  console.log('🧪 测试JWT中间件功能...\n');
  
  // 1. 测试无token访问（应该设置req.user为null）
  console.log('1️⃣ 测试无token访问...');
  try {
    const response = await axios.get(`${BASE_URL}/shorts/1`);
    console.log('✅ 无token访问成功');
    console.log('   响应状态:', response.status);
  } catch (error) {
    console.log('❌ 无token访问失败:', error.response?.status || error.message);
  }
  
  console.log('\n' + '─'.repeat(50));
  
  // 2. 测试无效token访问（应该设置req.user为null）
  console.log('2️⃣ 测试无效token访问...');
  try {
    const response = await axios.get(`${BASE_URL}/shorts/1`, {
      headers: {
        'Authorization': 'Bearer invalid_token_here'
      }
    });
    console.log('✅ 无效token访问成功');
    console.log('   响应状态:', response.status);
  } catch (error) {
    console.log('❌ 无效token访问失败:', error.response?.status || error.message);
  }
  
  console.log('\n' + '─'.repeat(50));
  
  // 3. 测试有效token访问（应该设置req.user）
  if (JWT_TOKEN !== 'your_jwt_token_here') {
    console.log('3️⃣ 测试有效token访问...');
    try {
      const response = await axios.get(`${BASE_URL}/shorts/1`, {
        headers: {
          'Authorization': `Bearer ${JWT_TOKEN}`
        }
      });
      console.log('✅ 有效token访问成功');
      console.log('   响应状态:', response.status);
      
      // 检查后端日志中是否显示了用户认证信息
      console.log('💡 请检查后端控制台日志，应该显示:');
      console.log('   🔐 JWT中间件 - 用户认证成功: { id: X, phone: X, vipExpiredAt: X }');
      
    } catch (error) {
      console.log('❌ 有效token访问失败:', error.response?.status || error.message);
    }
  } else {
    console.log('3️⃣ 跳过有效token测试（请先设置JWT_TOKEN）');
  }
  
  console.log('\n' + '─'.repeat(50));
  
  // 4. 测试VIP积分显示
  if (JWT_TOKEN !== 'your_jwt_token_here') {
    console.log('4️⃣ 测试VIP积分显示...');
    try {
      const response = await axios.get(`${BASE_URL}/shorts/1`, {
        headers: {
          'Authorization': `Bearer ${JWT_TOKEN}`
        }
      });
      
      if (response.data && response.data.chapters && response.data.chapters.length > 0) {
        console.log('✅ VIP积分显示测试成功');
        const firstChapter = response.data.chapters[0];
        console.log(`   章节: ${firstChapter.title}`);
        console.log(`   积分: ${firstChapter.points}`);
        console.log('💡 如果用户是VIP，积分应该显示为0');
      }
      
    } catch (error) {
      console.log('❌ VIP积分显示测试失败:', error.response?.status || error.message);
    }
  } else {
    console.log('4️⃣ 跳过VIP积分测试（请先设置JWT_TOKEN）');
  }
}

// 显示使用说明
function showUsage() {
  console.log('\n📝 使用说明:');
  console.log('1. 确保后端服务已启动');
  console.log('2. 检查.env文件中的JWT_SECRET配置');
  console.log('3. 在脚本中设置有效的JWT_TOKEN');
  console.log('4. 运行测试脚本');
  console.log('\n🔍 检查后端日志:');
  console.log('   - 无token: "ℹ️  JWT中间件 - 无Authorization头"');
  console.log('   - 无效token: "⚠️  JWT中间件 - Token验证失败"');
  console.log('   - 有效token: "🔐 JWT中间件 - 用户认证成功"');
}

// 主函数
async function main() {
  console.log('🚀 开始测试JWT中间件...\n');
  
  await testMiddleware();
  
  console.log('\n✨ 中间件测试完成！');
  showUsage();
}

// 运行测试
main().catch(console.error); 